All Articles

Python 한눈에 톺아보기

Python 뽀개기

  • Print - 프린트다음에 오는 글자들을 출력

    • print( “Hello World!“)
  • Data Type

    • Integer - 정수
    • Float - 소수점이 들어간 숫자
    • Complex Num - 실수+ 허수 복소수
    • String 문자
    • Boolean 조건문 평가값 T/F
  • Variable

    • 변수 지정 하고 변수 수정 자유로움
    • 변수이름 = 변수값
    • 변수 이름 법칙
    • 변수 이름은 영어 알파벳과 숫자 그리고 underscore (_) 으로만 구성될 수 있습니다.
    • 변수 이름 첫글자는 알파벳이나 underscore로만 시작해야 합니다. 숫자로는 시작될 수 없습니다.
    • 영어 알파벳은 대문자와 소문자가 구분이 됩니다 (case sensitive).
  • String

    • fomatting
    • %-formatting - 코드 가독성이 떨어짐

      >>>name = "Eric" age = 74
      "Hello, %s.You are %s." % (name, age) 
      'Hello Eric. You are 74.'`
    • str.format() - 인수가 많아질 경우 복잡해지기 마찬가지

      `>>> person = {‘name’: ‘Eric’, ‘age’: 74}

      >>> "Hello, {name}. You are {age}.".format(**person) 
      'Hello, Eric. You are 74.'`

      f-String https://realpython.com/python-f-strings/#arbitrary-expressions

      >>> name = "Eric">>> age = 74
      >>> f"Hello, {name}. You are {age}.
      "'Hello, Eric. You are 74.'`
      • 단순, 응용력 좋음, 멀티라인,
      • Quotation Mark 1, 2, 3개의 ” “이 앞뒤로 붙어도 된다.
      • Dictionaries 데이터도 텍스트에 삽입
      • Note - 딕셔너리 데이터 키 이름이 텍스트 인용 부호와 같으면 오류
      • comedian = {‘name’: ‘Eric Idle’, ‘age’: 74} f’The comedian is {comedian[‘name’]}, aged {comedian[‘age’]}. ’ File ””, line 1 f’The comedian is {comedian[‘name’]}, aged {comedian[‘age’]}.’ ^SyntaxError: invalid syntax` 참이 되려면 아래처럼 f”The comedian is {comedian[‘name’]}, aged {comedian[‘age’]}.” ‘The comedian is {comedian[“name”]}, aged {comedian[“age”]}.’

        
      • Braces 다중 괄호 가능하다
      • 앞뒤각각 3개이상일 경우에 앞뒤로 2개 가능
      • >>> f"{{74}}"
        '{74}'
      • f string expression 부분에 ” 삽입은 불가능하다.
    • 문자연결
    • print(“Hello, ” + “World”)
    • name = input() print(f”Hello, {name}“)
    • multiple line 표현에는 앞뒤로 “*3 을 붙인다
  • Number

    • 따옴표 들어가면 안됨. “100” ≠ 100
    • 문자열과 숫자열의 계산 안됨
    • 수학연산
    • 가감승제

      • 정수나누기 정수값으로 떨어지게 반내림을 한다. 7 // 3 = 2
      • % : 나누고 나머지 값 표현
      • += 3: 변수에 값을 더하고 변수로 지정
      • -= 3: 변수에서 값을 뺌 값을 지정
      • *= : 변수에 값을 곱한값을 변수로 지정
      • /= : 변수를 값으로 나눈 결과를 변수로 지정
    • 사칙연산 우선순위!

      • ( )
      • ** 제곱!
      • *, / , 그리고 %
        • 와 -
  • white space = indention!!

    • js는 괄호로 종속성을 표현하지만 python은 들여쓰기로 종속성을 보여준다.
  • If statement

    if expression: 
      codes to execute
    if 2 + 2 == 4: 
      print(f"산수는 어렵지 않아요!")
    • elif and Else
    • elif = else if

      • if 구문과 연결되어 사용, if 다음에 사용이 가능하다.
      • if 가 false 일 경우 실행 true 면 if 에서 끝남
    • else

      • if 나 , else if 가 false 일 경우 실행, 별도의 조건이 필요없음
    • Testing condition
    • and : 여러 조건문 연결

      • 모든 조건문이 true 여야 한다. 하나라도 false 가 있으면 실행이 안됨
    • or

      • and 의 반대, 테스트 조건중 하나라도 true 이면 코드가 실행이 됨
    • Nested If Statements
    • 반복되는 컨디션이 있을때는 nested if statemens 즉 중첩되는 if 구문을 사용
    • (간격)으로 구분
    • 2단계 이상 중첩을 하면 가독성이 너무 떨어지기 때문에 일반적으로 2단계 이상은 잘 하지 않는다.

      if status == "학생":	
        if year >= 3:	
      		print("취업이 곧 다가온다")	
        elif year == 2:	
      		print("그래도 아직 놀 시간이 있네..")	
        elif year < 2:	
      		print("한창 놀때지..")	
        else:	
          print("열심히 공부 해서 대학교 부터 가라!")
  • 비교 연산자

    • == : 같다
    • != : 다르다
    • ”>”: 크다 *string 도 > 으로 비교가능하다 .
    • < : 작다
    • ”>=” : 크거나 같다.
    • <= : 작거나 같다.
  • Comment

    • #으로 시작한다
    • 멀티라인삽입 - 가능하나 보통 #으로 처리한다.
    '''This is a multiline comments. 
    이렇게 여러 줄에 걸쳐서 
    주석을 삽입하는게 가능합니다...'''

    best practice는 주석은 최소한으로 사용하는 것

  • Function

    • 반복코드의 효과적 사용
    • 코드의 가독성 향상

    def 함수명(parameter): 문장1 문장2 … 문장N [return 리턴값]

    parameter 와 return 은 optional

    • parameter

    • positional arguments

      • 순서대로 값이 parameter로 함수에 전해지는 경우
    • keyword arguments

      • 순서 대신에 parameter 이름으로 맞추어서 값을 전해준다.
      • 가독성 향상
      • 실수 가능성 줄임
    • Mixing positional arguments and keyword arguments 두개를 섞는 것도 가능함

      • keyword arguments 는 순서가 바뀌어도 상관 없지만 positional arguments 부분은 순서를 지켜줘야 한다
    • Parameter Default Value

      • Default 값이 정의된 paramter는 함수가 호출될때 값이 넘겨지 않아도 괜찮다.
      • 값이 넘겨지 않은 경우 default 값이 자동으로 넘겨지게 된다.
      • default 값이 정의된 parameter가 default 값이 정의 되지 않은 parameter 보다 먼저 위치해 있으면 안됨 syntax 에러 표현
  • List

    • string, number, boolean 등 모든 타입의 값을 저장할 수 있다.
    • samlple
    korea_provinces = ["강원도", "경기도", "경상도", "전라도", "충청도"]

    구성

    • variable 변수명
    • Element 구성 요소
    • index
    • 인덱스는 0부터 시작
    • index의 마지막은 n-1 (n은 list의 총 길이)
    • 소환은 ListName[index]
    • Adding And Changing Elements To List
    • Append :한개의 엘리먼트

      • (element)
    • : 한개 이상의 엘리먼트 추가

      • list1 = list1 + list2
      • 새로 생성된 list를 변수에 다시 지정해 주지 않으면 기존 list들은 수정이 되지 않은 상태로 남아있게 된다.
    • insert

      • 원하는 위치에 element를 삽입
      cities = [ "서울특별시", "부산광역시", "인천광역시", "대구광역시", "대전광역시" ] cities.insert(1, "제주특별자치도 제주시") <= 부산광역시 자리( cities[1]) 에 채워넣음, 나머지 뒤로 한칸씩 밀린다.
      
      cities = [ "서울특별시","제주특별자치도 제주시", "부산광역시", "인천광역시", "대구광역시", "대전광역시" ]
    • Empty List

      • 비어있는 대괄호( )로 생성
    • Updating Elements

      • 수정하고자 하는 element의 index 값을 통해 list에서 element를 선택한 후 새로운 값을 지정
      cities = [ "서울특별시", "부산광역시", "인천광역시", "대구광역시", "대전광역시",]cities[2] = "경기도 성남시"
    • List Slicing
    • 리스트의 일부분을 따로 copy
      • slicing은 오리지널 list를 수정하는게 아니라, 새로운 list를 만들어 낸다
    • samplelist_name[start : stop]
    • start와 stop에는 정수만 들어가야 한다! 2.0 도 안됨!!
    • Slicing Steps

      • list_name[start : stop : step]
      • optional
    • Slicing Tip

      • start index를 빈칸으로 남겨두면 해당 list의 첫 요소 부터 시작
      • stop index를 빈칸으로 남겨두면 start index 부터 끝까지 가져옴
    • Deleting Elements From List
    • del ListName[indexNumber]
    • Listname.remove(Element)
  • Tuples

    • List는 수정이 가능하지만 tuple은 한번 선언되면 수정이 불가능
    • […] => list , (…) => tuples
    • 2개에서 5개 사이의 요소들을 저장할때 사용
    • 특정 데이터를 ad hoc(즉석적으로) 하게 표현하고 싶을때 사용
    • List의 요소들로 tuple을 사용cords = [ (4,4), (5,2), (-2, 2), (-3, -4) ]
    • 인덱스 할당으로 데이터 입력이 불가능하다.tuple= (value,...) (가능)``tuple[n] = value (불가능)
  • Set

    • list의 친척
    • ordering이 없다.
    • 순서가 없으므로 indexing도 없다.
    • 중복값이 존재하지 않는다. 중복값 입력시 새로운 요소가 이전 요소 대신함
    • Set 생성하는 법
    • 중괄호 ({ }) 사용

      set1 = {1, 2, 3}
    • set() 함수

      set2 = set([1, 2, 3])
      • set를 만들기 위해서는 list를 parameter로 전달
      • set() 함수를 사용해서 set를 만드는 경우는 list를 set로 변환하고 싶을 때
    • Set에서 새로운 요소 추가
    my_set = {1, 2, 3} my_set.add(4)print(my_set)> {1, 2, 3, 4}
    • Set에서 요소 삭제
    my_set = {1, 2, 3} my_set.remove(3)print(my_set)> {1, 2}
    • Look Up : value 존재여부 알아보기
    my_set = {1, 2, 3} 
    if 1 in my_set: 
      print("1 is in the set")
     > 1 is in the set
    if 4 not in my_set: 
      print("4 is not in the set")
      >4 is not in the set
    • Intersection (교집합) & Union (합집합)
    • 교집합은 & 키워드 혹은 intersection

      set1 = {1, 2, 3, 4, 5, 6} 
      set2 = {4, 5, 6, 7, 8, 9}
      print(set1 & set2)
      > {4, 5, 6}
      print(set1.intersection(set2))
      > {4, 5, 6}
    • 합집합은 | 키워드 혹은 union 함수

      print(set1 | set2)
      > {1, 2, 3, 4, 5, 6, 7, 8, 9}
      print(set1.union(set2))
      > {1, 2, 3, 4, 5, 6, 7, 8, 9}
  • Dictionary

    • object 는 키에 스트링 표현을 안붙여도 입력이 가능했는데 Dictionary는 그러지가 않는다.
    • sample
    • my_dic = { "key1" : "value1", "key2" : "value2"}

    Dictionary에서 요소(element) 읽어들이기

    • DictionaryName[“key Name”]
    • Elements add
    • DictionaryName[New_Key]=new_value
    • 동일한 key가 이미 존재할 경우 새로운 값이 대체한다
    • Elements fix
    • DictionaryName[Key] = fixed Element.
    • Elements remove
    • del DictionaryName[Key]
    • Looping
    • for each_key in DictionaryID

      • 딕셔너리의 키값들을 리턴
    • for each_key in DictionaryID.values()

      • 밸류값들을 리턴
    • Looping Dictionary With Both Keys And Values

      • for each_key, each value in DictionaryID.items()
      • Dictionary의 items 함수는 key와 value를 tuple로 리턴
    • Complex Dictionary
    • List of Dictionaries

      • 손쉽게 여러 dictionary들을 grouping
      • 특정 dictionary 접근시 코드와 실행 시간이 길어진다.
    • Nested Dictionary

      • 원하는 데이터의 키값으로 바로 찾을 수 있다.
  • For Loops

    • for element in list: do_something_with_element
    • For 문은 tuple, set 등에서도 사용이 가능하다.
    • Break
    • 다음 interation으로 넘어가지 않고 for 구문에서 빠져나옴
    • Continue
    • for 문 안의 추가된 코드 실행안시키고 interation으로 넘어가고 싶을때는 continue
    • Nested For Loops
      numbers1 = [1, 2, 3, 4, 5]
      numbers2 = [10, 20, 30, 40, 50]
      for num1 in numbers1: 
        for num2 in numbers2: 
        print(f"{num1} * {num2} == {num1 * num2}")
  • While Loops

    • 특정 조건문이 True 일 경우에만 코드블록을 반복 실행
    • while <조건문>: 
      <수행할 문장1> 
      <수행할 문장2> 
      <수행할 문장3> 
      ... 
      <수행할 문장N> 

    number = 0 while number <= 10: print(number) number += 1

    0…10

    Break & Continue
    
    - For문과 동일하게 break는 while문을 강제종료
    
    - continue는 다음 iteration으로 넘어갑니다.
    
    - ```python
      number = 0
      while number <= 10: 
        if number == 9: 
          break 
        elif number <= 5: 
          number += 1 continue 
        else: 
          print(number) 
          number += 1
      
      > 678
    • While Else
    • while의 조건문이 False 이면 실행
    • while <조건문>: 
      <수행할 문장1> 
      <수행할 문장2>
      <수행할 문장3> 
      ... 
      <수행할 문장N> 
      else: 
      <while문이 종료된 후 수행할 문장1> 
      <while문이 종료된 후 수행할 문장2> 
      <while문이 종료된 후 수행할 문장3> 
      ...
      <while문이 종료된 후 수행할 문장N>